Field
The invention relates to software changes, and more particularly to tracking changes, enforcing authorized change policies, and reconciling deployed changes against approved change orders.
Related Art
The maintenance of hosts in information technology infrastructures typically involves changes or updates to the software of the systems. Changes can include program updates, configuration file changes, security configuration changes, etc. There are two general processes involved in making software changes. The first is a process for approving software change orders, such as a process wherein staff members propose changes to the software set of one or more hosts and a review body approves or rejects individual change orders (sometimes referred to as “engineering change orders” or ECOs). The second is a process for deploying software changes and updates on one or more hosts, a process that can incorporate any degree of automation to “push” software changes onto the hosts.
An important challenge today is the lack of visibility into how closely the set of deployed changes matches the set of approved change orders, and what changes are outside of that intersection, including deployed changes that were not approved and approved change orders that are not yet deployed. A related challenge is the lack of available enforcement mechanisms today for blocking undesired changes on hosts. Yet another related challenge is the lack of visibility into the actual set of deployed changes on a host, regardless of whether the changes were desired, undesired, known or even unknown. These challenges are important from a variety of perspectives, including system availability and uptime, system security, and compliance with legal regulations such as the Sarbanes Oxley Act of 2002 and the Federal Information Security Management Act (FISMA).
The above challenges are at the root of why today the software change deployment process and the software change approval process are two generally disconnected processes. In the software change approval process, a request is submitted for the approval of one or more changes to one or more hosts, and approved change orders (if any) are recorded for future reference. In the software change deployment process, a change to a system is deployed by a person, an automated program, or via a hybrid process. Any reconciliation or audit of the deployed changes against the approved change orders is done generally by humans comparing system logs indicating a set of deployed changes against a list of approved change orders, often using physical records (such as paper printouts) to do tedious manual comparisons. Matching entries in the two sets allows identification of discrepancies, such as deployed changes that are not approved and approved changes that are not deployed, which can then be addressed. Needless to say, this is resource-intensive due to the partially or completely manual nature of the verification process. It is also error prone simply because of scale and statistically inevitable errors due to human involvement in the process, making it indefensible to outside auditors demanding reasonable proof that the deployed changes match the approved change orders. Furthermore, the change approvals are not enforceable because today changes that are not approved cannot be automatically blocked from becoming deployed and taking effect on a host.
Accordingly, there is a need for methods and systems for aligning deployed changes and approved change orders in the software change life-cycle, allowing tracking of deployed or attempted changes, allowing enforcement of authorized change policies by blocking unauthorized changes, and affording visibility into how the set of deployed changes relates to the set of approved change orders.